package com.sky.mapper;

import com.sky.entity.DishFlavor;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 不是很明白,为啥员工表,菜品表就是mapper类;而这个对应的风味表要是一个mapper接口
 * 大致意思是说,因为员工表还有菜品表有对应的实体类;而这个风味表没有对应的实体类
 * @author 岳海
 * @version 1.0
 * 312 / 356
 */
@Mapper
public interface DishFlavorMapper {

    /**
     * 批量插入口味数据
     * 会用到动态sql,所以要写到xml映射文件中
     * @param flavors
     */
    void insertBanch(List<DishFlavor> flavors);

    /**
     * 根据菜品id来删除对应的口味表中的数据
     * @param dishId
     */
    @Delete("delete from dish_flavor where dish_id = #{dishId}")
    void deleteByDishId(Long dishId);
    //这里把形参名改成了dishId,因为在dish_flavor表中,菜品id对应的名字就是dishId;
        // 否则如果形参写成id,容易误解成主键id来删除,而dish_flavor中的id可不是菜品id,而是菜品口味对应的id

    /**
     * 根据菜品id集合批量删除菜品关联的口味表中的数据
     * @param dishIds
     */
    void deleteByDishIds(List<Long> dishIds);
    //这里把形参名改成了dishIds,要是还叫ids;容易误解成主键的id,在dish_flavor口味表中的id可不是dishId,所以怕弄错了
        //这里是通过菜品id来删除,所以我们要的是口味表中的dish_id对应后端代码的属性是dishId

    /**
     * 根据菜品id来查询对应的口味数据
     * 这个也属于最基础的查询,前面竟然没实现这个方法
     * @param dishId
     * @return
     */
    @Select("select * from dish_flavor where dish_id = #{dishId}")
    List<DishFlavor> getByDishId(Long dishId);


}
